package mybatis.interfaces;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;

import java.util.HashMap;
import java.util.Map;

/**
 * @author CKC
 * @date 2022/11/11 12:31
 * <p>
 * 不建议使用 影响mysql查询效率
 */
public interface ISearchAndQueryCondition {
    /**
     * 模糊查询，逻辑或连接,仅支持不同字段OR连接,不支持id的模糊查询，
     * eg: searchAnd[type]=enum1&searchAnd[name]=name1 表示 type like '%enum1%' and name like '%name1%'
     * 备注：为了与SwaggerUI结合，产生Swagger文档
     *
     * @return null
     */
    @ApiModelProperty(name = "searchAnd[?]", value = "模糊查询，逻辑或连接,仅支持不同字段And连接,不支持id的模糊查询，eg: searchAnd[type]=enum1&searchAnd[name]=name1 表示 type like '%enum1%' and name like '%name1%' ")
    @JsonIgnore
    default String getSearchAndSwaggerView() {
        return null;
    }

    /**
     * 存储的 key  value
     *
     * @return map
     */
    Map<String, String> getSearchAnd();

    /**
     * @param searchAnd 条件
     */
    void setSearchAnd(Map<String, String> searchAnd);

    /**
     * @param field key
     * @param value value
     */
    default void addSearchAnd(String field, String value) {
        if (getSearchAnd() == null) {
            setSearchAnd(new HashMap<>(8));
        }
        getSearchAnd().put(field, value);
    }

    /**
     * isEmptySearchOr
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    default boolean isEmptySearchAnd() {
        return getSearchAnd() == null || getSearchAnd().isEmpty();
    }

}
